package com.cn.springcloudwechat.common.utils.weixin.api;

import java.io.UnsupportedEncodingException;

/**
 * 会话控制
 * 
 * @创建者 x.c
 * @地址 成都云函科技有限公司
 * @时间 2017年12月15日
 * @版本 v1.0.0
 */
public interface DialogueAPI {
	/**
	 * 创建会话
	 */
	static String create_dialogue_url = "/customservice/kfsession/create?access_token=%s";
	/**
	 * 关闭会话
	 */
	static String delete_dialogue_url = "/customservice/kfsession/close?access_token=%s";
	/**
	 * 获取客户会话状态
	 */
	static String get_dialogue_status_url = "/customservice/kfsession/getsession?access_token=%s&openid=%s";
	/**
	 * 获取客户会话列表
	 */
	static String get_customer_list_url = "/customservice/kfsession/getsessionlist?access_token=%s&kf_account=%s";

	/**
	 * 获取未接入会话列表
	 */
	static String no_dialogue_url = "/customservice/kfsession/getwaitcase?access_token=%s";
	/**
	 * 获取聊天记录
	 * 
	 * 此接口返回的聊天记录中，对于图片、语音、视频，分别展示成文本格式的[image]、[voice]、[video]。对于较可能包含重要信息的图片消息
	 * ，后续将提供图片拉取URL，近期将上线。
	 */
	static String get_chat_record = "/customservice/msgrecord/getmsglist?access_token=%s";

	/**
	 * 创建会话
	 * 
	 * @方法名:createDialogue
	 * @描述:
	 * @param kf_account
	 * @param openid
	 * @return
	 */
	String createDialogue(String kf_account, String openid) throws UnsupportedEncodingException;

	/**
	 * 关闭某个客户的会话
	 * 
	 * @方法名:deleteDialogue
	 * @描述:
	 * @param openid
	 * @return
	 */
	String deleteDialogue(String kf_account, String openid) throws UnsupportedEncodingException;

	/**
	 * 获取客户会话状态
	 * 
	 * @方法名:getDialogueStatus
	 * @描述:
	 * @param openid
	 * @return kf_acount 正在接待的客服，为空表示没有人在接待 createtime 会话接入的时间
	 */
	String getDialogueStatus(String openid);

	/**
	 * 获取客服会话列表
	 * 
	 * @方法名:getCustomerList
	 * @描述:
	 * @param kf_account
	 * @return
	 */
	String getCustomerList(String kf_account);

	/**
	 * 获取客户未接入会话列表
	 * 
	 * @方法名:noDialogue
	 * @描述:
	 * @return
	 */
	String noDialogue();

	/**
	 * 获取聊天记录
	 * 
	 * @方法名:getChatRecord starttime 起始时间， unix时间戳 endtime
	 *                    结束时间，unix时间戳，每次查询时段不能超过24小时 msgid 消息id顺序从小到大，从1开始
	 *                    number 每次获取条数，最多10000条
	 * @描述:
	 * @return worker 完整客服帐号，格式为：帐号前缀@公众号微信号 openid 用户标识 opercode
	 *         操作码，2002（客服发送信息），2003（客服接收消息） text 聊天记录 time 操作时间，unix时间戳
	 *        若获取的number和请求的number一致 则可能会有聊天记录没获取完,再次拉取msgid和返回设置为一样再次请求此接口
	 */
	String getChatRecord(String starttime, String endtime, String msgid, String number) throws UnsupportedEncodingException;
}
